import request from '@/utils/request'

/**
 * 基础API服务类
 * 提供基础的API调用方法
 */
export class BaseApiService {
  /**
   * 构造函数
   * @param {string} baseUrl - API基础路径
   */
  constructor(baseUrl) {
    this.baseUrl = baseUrl
    this.request = request
  }

  /**
   * 获取完整的API路径
   * @param {string} path - API路径
   * @returns {string} 完整的API路径
   */
  getFullPath(path) {
    return `${this.baseUrl}${path}`
  }

  /**
   * 发送GET请求
   * @param {string} path - API路径
   * @param {Object} params - 请求参数
   * @returns {Promise} 请求结果
   */
  async get(path, params = {}) {
    return this.request.get(this.getFullPath(path), params)
  }

  /**
   * 发送POST请求
   * @param {string} path - API路径
   * @param {Object} data - 请求数据
   * @returns {Promise} 请求结果
   */
  async post(path, data = {}) {
    return this.request.post(this.getFullPath(path), data)
  }

  /**
   * 发送PUT请求
   * @param {string} path - API路径
   * @param {Object} data - 请求数据
   * @returns {Promise} 请求结果
   */
  async put(path, data = {}) {
    return this.request.put(this.getFullPath(path), data)
  }

  /**
   * 发送DELETE请求
   * @param {string} path - API路径
   * @returns {Promise} 请求结果
   */
  async delete(path) {
    return this.request.delete(this.getFullPath(path))
  }

  /**
   * 上传文件
   * @param {string} path - API路径
   * @param {string} filePath - 文件路径
   * @param {Object} formData - 额外的表单数据
   * @returns {Promise} 请求结果
   */
  async upload(path, filePath, formData = {}) {
    return this.request.upload(this.getFullPath(path), filePath, formData)
  }
} 